package com.wg.net.peer;

import com.wg.net.DisconnectReason;

/**
 * 托管对端接口（定义应用层与网络层的交互契约）
 * <p>
 * 职责：
 * - 管理连接的生命周期事件（断开、接收消息）
 * - 提供与应用层交互的回调入口
 *
 * @author 少爷123
 */
public interface IManagedPeer {

    /**
     * 应用层断开连接回调（当网络层主动断开时触发）
     *
     * @param reasonCode   断开原因代码（如超时、客户端主动关闭）
     * @param reasonDetail 断开详细说明（可选，补充信息）
     * @return 是否允许断开（true：允许；false：阻止断开）
     */
    boolean applicationOnDisconnect(DisconnectReason reasonCode, String reasonDetail);

    /**
     * 应用层接收消息回调（当网络层收到数据时触发）
     *
     * @param data 接收到的原始字节数据（已解包）
     */
    void applicationOnReceive(byte[] data);
}